home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Linux Cubed Series 7: Sunsite
/
Linux Cubed Series 7 - Sunsite Vol 1.iso
/
system
/
shells
/
scsh-0.4
/
scsh-0
/
scsh-0.4.2
/
debug
/
byte-code-test.scm
next >
Wrap
Text File
|
1995-10-13
|
2KB
|
77 lines
; Copyright (c) 1993, 1994 Richard Kelsey and Jonathan Rees. See file COPYING.
; Test various of the byte-codes
;(let ((system (make-system '("~/s48/x48/boot/byte-code-test.scm") 'resume #f)))
; (write-system system "~/s48/x48/boot/byte-code-test.image"))
(define *tests* '())
(define *output-port* #f)
(define (make-test . args)
(set! *tests* (cons args *tests*)))
(define (run-test string compare result proc)
(write-string string *output-port*)
(write-string "..." *output-port*)
(force-output *output-port*)
(write-string (if (compare (proc) result) "OK" "failed") *output-port*)
(write-char #\newline *output-port*))
(make-test "testing test mechanism" (lambda (x y) (eq? x y)) 0 (lambda () 0))
(make-test "primitive catch and throw" (lambda (x y) (eq? x y)) 10
(lambda ()
(* 10 (primitive-catch (lambda (k)
(my-primitive-throw k 1)
(message "after throw???")
2)))))
(define (my-primitive-throw cont value)
(with-continuation cont (lambda () value)))
(define (message string)
(write-string string *output-port*)
(write-char #\newline *output-port*))
(define (resume arg in out)
(set! *output-port* out)
(do ((tests (do ((tests *tests* (cdr tests))
(r '() (cons (car tests) r)))
((eq? '() tests) r))
(cdr tests)))
((eq? '() tests))
(apply run-test (car tests)))
(write-string "done" *output-port*)
(write-char #\newline *output-port*)
(halt 0))
(define *initial-bindings* '())
(define (initial-env name)
(let ((probe (assq name *initial-bindings*)))
(if probe (cdr probe) (error "unbound" name))))
(define (define-initial name val)
(let* ((probe (assq name *initial-bindings*))
(loc (if probe
(cdr probe)
(let ((loc (make-undefined-location name)))
(set! *initial-bindings*
(cons (cons name loc) *initial-bindings*))
loc))))
;; (set-location-defined?! loc #t) - obsolescent?
(set-contents! loc val)))
(for-each (lambda (name val)
(define-initial name val))
'( cons car cdr + - * < = > list map append reverse)
(list cons car cdr + - * < = > list map append reverse))
(make-test "little env-lookup test" eq? car
(lambda ()
(contents (initial-env 'car))))
(define (error string . stuff) (message string))